package cn.merlulin.monitor.domain.repository;

import cn.merlulin.monitor.domain.model.entity.MonitorDataEntity;
import cn.merlulin.monitor.domain.model.entity.MonitorDataMapEntity;
import cn.merlulin.monitor.domain.model.entity.MonitorFlowDesignEntity;
import cn.merlulin.monitor.domain.model.vo.GatherNodeExpressionVO;
import cn.merlulin.monitor.domain.model.vo.MonitorTreeConfigVO;

import java.util.List;

/**
 * @author Merlin
 * @version 1.0
 * @email 756151581@qq.com
 * @desc 监控仓储接口
 * @date 2025/1/16 16:36
 */
public interface IMonitorRepository {

    /**
     * 查询采集节点表达式
     * @param systemName
     * @param className
     * @param methodName
     * @return
     */
    List<GatherNodeExpressionVO> queryGatherNodeExpression(String systemName, String className, String methodName);

    /**
     * 根据监控ID查询监控名称
     * @param monitorId
     * @return
     */
    String queryMonitoryNameByMonitorId(String monitorId);

    /**
     * 保存监控数据
     * @param monitorDataEntity
     */
    void saveMonitorData(MonitorDataEntity monitorDataEntity);

    /**
     * 查询所有监控数据地图
     * @return
     */
    List<MonitorDataMapEntity> queryMonitorDataMapEntityList();

    /**
     * 查询监控流量数据
     * @param monitorId
     * @return
     */
    MonitorTreeConfigVO queryMonitorFlowData(String monitorId);

    /**
     * 查询监控数据
     * @param monitorDataEntity
     * @return
     */
    List<MonitorDataEntity> queryMonitorDataEntityList(MonitorDataEntity monitorDataEntity);

    /**
     * 更新监控节点流
     * @param monitorFlowDesignEntity
     */
    void updateMonitorFlowDesign(MonitorFlowDesignEntity monitorFlowDesignEntity);
}
